package com.sjb.modelMethod;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: 有点儿意思
 * @Description:
 */
public abstract class BaseGame implements GameInterface {

    @Override
    public void initialize() {
        System.out.println("初始化游戏");
    }

    @Override
    public void statPlay() {
        System.out.println("开始玩游戏");
    }

    @Override
    public void endPlay() {
        System.out.println("结束玩游戏");
    }

    /**
     * 定义模板方法
     */
    public void play(){
        // todo 可以处理其他业务逻辑
        initialize();
        beforeStartPlay();
        // todo 可以处理其他业务逻辑
        statPlay();
        endPlay();
        afterEndPlay();
    }

    /**
     * 抽象方法 留给子类实现 在开始玩之前
     */
    public abstract void beforeStartPlay();

    /**
     * 抽象方法 留给子类实现 在结束玩之和
     */
    public abstract void afterEndPlay();

}
